##############################################################
## MOD Title: Torrent Thanks & Rating Mod
## MOD Author:  AlexNU for Tp v.035.  -  NNM-CLUB for XBTT
## MOD Version: 0.1
## :    
## Installation Level: Easy
## Installation Time: 5 Minutes
## Files To Edit: displaying_torrent.php
##                functions_attach.php
##                constants.php
##                viewtopic_attach_body.tpl
##                tracker.php
##                tracker.tpl
##
## License: http://opensource.org/licenses/gpl-license.php GNU General Public License v2
##############################################################
## For security purposes, please check: http://www.phpbb.com/mods/
## for the latest version of this MOD. Although MODs are checked
## before being allowed in the MODs Database there is no guarantee
## that there are no security problems within the MOD. No support
## will be given for MODs not found within the MODs Database which
## can be found at http://www.phpbb.com/mods/
##############################################################
##
## MOD History:
##    2008-05-10 - Version 0.1.0
##    	- initial release
##
##############################################################
## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD
##############################################################

#-----[ SQL ]------------------------------------------------ 

alter table phpbb_attachments_desc add ( 
thanks mediumint(8) NOT NULL default '0', 
rating_sum int(11) NOT NULL default '0', 
rating_count mediumint(8) NOT NULL default '0' 
); 

create table phpbb_attachments_rating ( 
attach_id mediumint(8) unsigned NOT NULL default '0', 
user_id mediumint(9) NOT NULL default '0', 
thanked tinyint(1) NOT NULL default '0', 
rating tinyint(1) NOT NULL default '0', 
PRIMARY KEY (attach_id, user_id) 
); 

#-----[ COPY ]------------------------------------------------ 
#


\root\rate.php 
\root\th_list.php 
\root\thank.php 
\root\misc\js\ajax.js 

#-----[ OPEN ]------------------------------------------------ 
# 

attach_mod\displaying_torrent.php 

# 
#-----[ FIND ]------------------------------------------------ 
#
 
		message_die(GENERAL_ERROR, 'Invalid show peers mode');
	}
}

$template->assign_vars(array(

# 
#-----[ AFTER, ADD ]---------------------------------------- 
# 

        'L_RATING'           => $lang['Rating'], 
        'L_RATING_VOTES'     => $lang['Rating_Votes'], 
        'L_THANKED'          => $lang['Thanked'],

# 
#-----[ FIND ]------------------------------------------------ 
#

$tor_reged = ($tracker_status) ? TRUE : FALSE;

# 
#-----[ ADD, BEFORE ]---------------------------------------- 
#
 
$rating_sum = $attachments['_'. $post_id][$i]['rating_sum'];
$rating_count = $attachments['_'. $post_id][$i]['rating_count'];
$thanks = $attachments['_'. $post_id][$i]['thanks'];
$thanked = $attachments['_'. $post_id][$i]['thanked'];
$your_vote = $attachments['_'. $post_id][$i]['rating'];


# 
#-----[ FIND ]------------------------------------------------ 
#

        $tor_size = ($tor_row['size']) ? $tor_row['size'] : 0;
        $tor_id   = $tor_row['torrent_id'];

# 
#-----[ AFTER, ADD ]---------------------------------------- 
#

	$rate_html = '';
	for ($r = 5; $r >= 1; $r-- ) {
		$rate_html .= '<input type="radio" name="rate'.$attach_id.'" value="'.$r.'" onClick="ajax_do(\''
		. append_sid("rate.$phpEx?a=" . $attach_id . "&v=" . $r ) .'\');" />'
		. '<span onclick="nodeClick(this);">' . $lang['Rating_'.$r] . '</span>';
	}


# 
#-----[ FIND ]------------------------------------------------ 
#

                'FILESIZE'            => $tor_file_size,

# 
#-----[ AFTER, ADD ]---------------------------------------- 
#

		'RATING'              => '<span id="VR'.$attach_id.'">'. ($rating_sum ? round($rating_sum/$rating_count,1) : '-') .'</span>',
		'RATING_VOTES'        => '<span id="VC'.$attach_id.'">'. $rating_count .'</span>',
		'THANKED' => '<span id="VT'.$attach_id.'">'. $thanks .'</span>' 
. ($thanked || ($userdata['user_id'] == $poster_id) ? '' : '<span id="VB'.$attach_id.'">'. '&nbsp; <input type="button" class="button" onClick="this.disabled=true;ajax_do(\'' 
. append_sid("thank.$phpEx?a=" . $attach_id) .'\');" value="'. $lang['Thanks'] .'" /></span>') 
. ($thanks > 0 ? ' &nbsp; (<span id="VL'.$attach_id.'"><a href="#torrent" onClick="ajax_do(\'th_list.php?a='.$attach_id.'\');">'. $lang['Thank_List'] .'</a></span>)' : ''), 
		'YOUR_VOTE'           => $your_vote > 0 ? $your_vote : '',
		'DO_VOTE'             => $userdata['user_id'] == ANONYMOUS ? '' : ('<span id="VD'.$attach_id.'">'. $rate_html .'</span>'),

#-----[ OPEN ]------------------------------------------------ 
# 

attach_mod\includes\functions_attach.php

# 
#-----[ FIND ]------------------------------------------------ 
#

	global $db, $attach_config;
	$attachments = array();

# 
#-----[ REPLACE WITH ]---------------------------------------- 
#
	global $db, $attach_config, $userdata;
	$attachments = array();
	$user_id = $userdata['user_id'];


# 
#-----[ FIND ]------------------------------------------------ 
#

	$sql = 'SELECT a.post_id, d.*
		FROM ' . ATTACHMENTS_TABLE . ' a, ' . ATTACHMENTS_DESC_TABLE . " d


		WHERE a.post_id IN ($post_id_array)
			AND a.attach_id = d.attach_id
		ORDER BY d.filetime $display_order";

# 
#-----[ REPLACE WITH ]---------------------------------------- 
#

	$sql = 'SELECT a.post_id, d.*'. ($user_id==ANONYMOUS ? '' : ', r.thanked, r.rating') .'
		FROM ' . ATTACHMENTS_TABLE . ' a join ' . ATTACHMENTS_DESC_TABLE . " d on a.attach_id = d.attach_id"
		. ($user_id==ANONYMOUS ? '' : ' left join '. ATTACHMENTS_RATING_TABLE
		. ' r on r.attach_id=a.attach_id and r.user_id=' . $user_id) ."
		WHERE a.post_id IN ($post_id_array)

		ORDER BY d.filetime $display_order";

#-----[ OPEN ]------------------------------------------------ 
# 

attach_mod\includes\constants.php

# 
#-----[ FIND ]------------------------------------------------ 
#

define('ATTACHMENTS_DESC_TABLE', $table_prefix . 'attachments_desc');

# 
#-----[ AFTER, ADD ]---------------------------------------- 
#

define('ATTACHMENTS_RATING_TABLE', $table_prefix . 'attachments_rating');


#-----[ OPEN ]------------------------------------------------ 
# 

attach_mod\includes\functions_delete.php

# 
#-----[ FIND ]------------------------------------------------ 
#

		$sql = 'DELETE FROM '. BT_TOR_DL_STAT_TABLE .'
			WHERE attach_id IN('. implode(',', $attach_id_array) .')';

		if (!$db->sql_query($sql))
		{
			message_die(GENERAL_ERROR, $lang['Error_deleted_attachments'], '', __LINE__, __FILE__, $sql);
		}

# 
#-----[ AFTER, ADD ]---------------------------------------- 
#

		$sql = "DELETE FROM ". ATTACHMENTS_RATING_TABLE ."
			WHERE attach_id IN(". implode(',', $attach_id_array) .")";

		if (!$db->sql_query($sql))
		{
			message_die(GENERAL_ERROR, $lang['Error_deleted_attachments'], '', __LINE__, __FILE__, $sql);
		}


#-----[ OPEN ]------------------------------------------------ 
# 

templates\subSilver\viewtopic_attach_body.tpl

# 
#-----[ FIND ]------------------------------------------------ 
#
	<!-- BEGIN comment -->
	<tr class="row1">
		<td class="genmed" align="center" colspan="3">&nbsp;{postrow.attach.tor_reged.comment.COMMENT}</td>

# 
#-----[ ADD, BEFORE ]---------------------------------------- 
#

	<tr class="row1">
		<td class="genmed">&nbsp;{L_RATING}:&nbsp;</td>
		<td class="genmed">&nbsp;{postrow.attach.tor_reged.RATING}&nbsp;({L_RATING_VOTES}: {postrow.attach.tor_reged.RATING_VOTES})
		<!-- IF postrow.attach.tor_reged.YOUR_VOTE -->
		{L_YOUR_VOTE}: {postrow.attach.tor_reged.YOUR_VOTE}
		<!-- ELSE -->
		{postrow.attach.tor_reged.DO_VOTE}
		<!-- ENDIF -->
		</td>
	</tr>
	<tr class="row1">
		<td class="genmed">&nbsp;{L_THANKED}:&nbsp;</td>
		<td class="genmed">&nbsp;{postrow.attach.tor_reged.THANKED}</td>
	</tr>

#-----[ OPEN ]------------------------------------------------ 
# 

templates\subSilver\overall_header.tpl 

# 
#-----[ FIND ]------------------------------------------------ 
#

<script language="JavaScript" type="text/javascript" src="misc/js/bbcode.js"></script>
<!-- ENDIF -->

# 
#-----[ AFTER, ADD ]---------------------------------------- 
# 

<script language="JavaScript" type="text/javascript" src="misc/js/ajax.js"></script> 

#-----[ OPEN ]------------------------------------------------ 
# 

\root\tracker.php

# 
#-----[ FIND ]------------------------------------------------ 
# 

$tor_colspan         = {%:1};   // colspan with all columns

# 
#-----[ IN-LINE FIND ]---------------------------------------- 
# 

{%:1}

# 
#-----[ IN-LINE INCREMENT ]----------------------------------- 
# 

%:1 +2

# 
#-----[ FIND ]------------------------------------------------ 
#

$dl_stat_tbl  = BT_USR_DL_STAT_TABLE .' dl';

# 
#-----[ AFTER, ADD ]---------------------------------------- 
#

$att_desc_tbl = ATTACHMENTS_DESC_TABLE .' ad';

# 
#-----[ FIND ]------------------------------------------------ 
#

$show_speed_key  = 'shs';

# 
#-----[ AFTER, ADD ]---------------------------------------- 
#

$show_rating_key = 'shr';
$show_thanks_key = 'sht';

# 
#-----[ FIND ]------------------------------------------------ 
#

$ord_last_s = 9;


# 
#-----[ AFTER, ADD ]---------------------------------------- 
#

$ord_rating = 10;
$ord_votes  = 11;
$ord_thanks = 12;

# 
#-----[ FIND ]------------------------------------------------ 
#

		              'lang' => $lang['Bt_Seeder_last_seen'],
		              'sql'  => 'tor.seeder_last_seen'
		             ),  
 
# 
#-----[ AFTER, ADD ]---------------------------------------- 
#

	$ord_rating => array(
		              'lang' => $lang['Bt_Sort_Rating'],
		              'sql'  => 'ad.rating_sum/ad.rating_count'
		             ),
	$ord_votes => array(
		              'lang' => $lang['Bt_Sort_Votes'],
		              'sql'  => 'ad.rating_count'
		             ),
	$ord_thanks => array(
		              'lang' => $lang['Bt_Sort_Thanks'],
		              'sql'  => 'ad.thanks'
		             ),

# 
#-----[ FIND ]------------------------------------------------ 
#

$show_speed_val  = $def_show_speed_val  = 0;

# 
#-----[ AFTER, ADD ]---------------------------------------- 
#

$show_rating_val = $def_show_rating_val = 0;
$show_thanks_val = $def_show_thanks_val = 0;

# 
#-----[ FIND ]------------------------------------------------ 
#

	checkbox_get_val ($show_speed_key,  $show_speed_val,  $def_show_speed_val);

# 
#-----[ AFTER, ADD ]---------------------------------------- 
#

	checkbox_get_val ($show_rating_key, $show_rating_val, $def_show_rating_val);
	checkbox_get_val ($show_thanks_key, $show_thanks_val, $def_show_thanks_val);

# 
#-----[ FIND ]------------------------------------------------ 
#

		$show_author_key => $show_author_val,

# 
#-----[ AFTER, ADD ]---------------------------------------- 
#

		$show_rating_key => $show_rating_val,
		$show_thanks_key => $show_thanks_val,


# 
#-----[ FIND ]------------------------------------------------ 
#

	$hide_speed  = (!$show_speed_val) ? 1 : 0;

# 
#-----[ AFTER, ADD ]---------------------------------------- 
#

	$hide_rating = (!$show_rating_val) ? 1 : 0;
	$hide_thanks = (!$show_thanks_val) ? 1 : 0;
	$use_att_tbl = !$hide_rating || !$hide_thanks || $order_val==$ord_rating || $order_val==$ord_votes || $order_val==$ord_thanks;

# 
#-----[ FIND ]------------------------------------------------ 
#

		// FROM
		$from_sql = "FROM $torrents_tbl, $topics_tbl, $forums_tbl";
		$from_sql .= ($only_active) ? ", $tracker_tbl" : '';

# 
#-----[ AFTER, ADD ]---------------------------------------- 
#

		$from_sql .= $use_att_tbl ? ", $att_desc_tbl" : '';

# 
#-----[ FIND ]------------------------------------------------ 
#

		$where_sql .= ($only_active) ? "
				AND tor.torrent_id = tr.torrent_id
				AND tr.expire_time > $current_time
		" :	'';

# 
#-----[ AFTER, ADD ]---------------------------------------- 
#

		$where_sql .= $use_att_tbl ? "
			AND tor.attach_id = ad.attach_id
		" :	'';
		$where_sql .= ($order_val==$ord_rating && !$req_poster_id) ? "
			AND ad.rating_count >= 5
		" :	'';

# 
#-----[ FIND ]------------------------------------------------ 
#

		$select_sql = 'SELECT tor.*, t.*, u.username, f.forum_id, f.forum_name, f.forum_icon, cat.cat_id, cat.cat_title';

# 
#-----[ AFTER, ADD ]---------------------------------------- 
#

		$select_sql .= $use_att_tbl ? ", ad.thanks, ad.rating_sum, ad.rating_count" : '';

# 
#-----[ FIND ]------------------------------------------------ 
#

		$from_sql .= ($only_active) ? ", $tracker_tbl" : '';

# 
#-----[ AFTER, ADD ]---------------------------------------- 
#

		$from_sql .= $use_att_tbl ? ", $att_desc_tbl" : '';

# 
#-----[ FIND ]------------------------------------------------ 
#

		$where_sql .= ($only_active) ? "
			AND tor.torrent_id = tr.torrent_id
			AND tr.expire_time > $current_time
		" :	'';

# 
#-----[ AFTER, ADD ]---------------------------------------- 
#

		$where_sql .= $use_att_tbl ? "
			AND tor.attach_id = ad.attach_id
		" :	'';

# 
#-----[ FIND ]------------------------------------------------ 
#

					'ADDED'        => create_date($date_format, $tor_row['reg_time'], $board_config['board_timezone'])

# 
#-----[ ADD, BEFORE ]---------------------------------------- 
#

					'RATING'      => $tor_row['rating_count'] ? round($tor_row['rating_sum']/$tor_row['rating_count'],1) .' ('. $tor_row['rating_count'] .')' : '-',
					'THANKS'      => $tor_row['thanks'] ? $tor_row['thanks'] : '-',

# 
#-----[ FIND ]------------------------------------------------ 
#

	'SHOW_SPEED_CHECKED'  => ($show_speed_val) ? $ch : '',

# 
#-----[ AFTER, ADD ]---------------------------------------- 
#

	'SHOW_RATING_NAME'    => $show_rating_key,
	'SHOW_RATING_VAL'     => $show_rating_val,
	'SHOW_RATING_CHECKED' => ($show_rating_val) ? $ch : '',
	'SHOW_THANKS_NAME'    => $show_thanks_key,
	'SHOW_THANKS_VAL'     => $show_thanks_val,
	'SHOW_THANKS_CHECKED' => ($show_thanks_val) ? $ch : '',

# 
#-----[ FIND ]------------------------------------------------ 
#

$tor_colspan = $tor_colspan - $hide_cat - $hide_forum - $hide_author - $hide_tcs - $hide_speed - $hide_rating - $hide_thanks;

# 
#-----[ REPLACE WITH ]---------------------------------------- 
#

$tor_colspan = $tor_colspan - $hide_cat - $hide_forum - $hide_author - $hide_tcs - $hide_speed - $hide_rating - $hide_thanks;

# 
#-----[ FIND ]------------------------------------------------ 
#

	'SHOW_SPEED'         => $show_speed_val

# 
#-----[ ADD, BEFORE ]---------------------------------------- 
#

	'SHOW_RATING'        => $show_rating_val,
	'SHOW_THANKS'        => $show_thanks_val,

# 
#-----[ FIND ]------------------------------------------------ 
#

	'L_TITLE_MATCH'   => $lang['Bt_Title_match']

# 
#-----[ ADD, BEFORE ]---------------------------------------- 
#

	'L_SHOW_RATING'   => $lang['Bt_Show_Rating'],
	'L_SHOW_THANKS'   => $lang['Bt_Show_Thanks'],
	'L_COL_RATING'    => $lang['Bt_Col_Rating'],
	'L_COL_THANKS'    => $lang['Bt_Col_Thanks'],


#-----[ OPEN ]------------------------------------------------ 
# 

templates\subSilver\tracker.tpl

# 
#-----[ FIND ]------------------------------------------------ 
#

<input type="hidden" name="prev_{SHOW_SPEED_NAME}" value="{SHOW_SPEED_VAL}" />

# 
#-----[ AFTER, ADD ]---------------------------------------- 
#

<input type="hidden" name="prev_{SHOW_RATING_NAME}" value="{SHOW_RATING_VAL}" />
<input type="hidden" name="prev_{SHOW_THANKS_NAME}" value="{SHOW_THANKS_VAL}" />

# 
#-----[ FIND ]------------------------------------------------ 
#

<div class="gen"><nobr><label for="show_forum"><input id="show_forum" type="checkbox" name="{SHOW_FORUM_NAME}" value="1" {SHOW_FORUM_CHECKED} />{L_SHOW_FORUM}&nbsp;</label>&nbsp;&nbsp;</nobr></div>

# 
#-----[ AFTER, ADD ]---------------------------------------- 
#

<div class="gen"><nobr><label for="show_rating"><input id="show_rating" type="checkbox" name="{SHOW_RATING_NAME}" value="1" {SHOW_RATING_CHECKED} />{L_SHOW_RATING}&nbsp;</label></nobr></div>
<div class="gen"><nobr><label for="show_thanks"><input id="show_thanks" type="checkbox" name="{SHOW_THANKS_NAME}" value="1" {SHOW_THANKS_CHECKED} />{L_SHOW_THANKS}&nbsp;</label></nobr></div>

# 
#-----[ FIND ]------------------------------------------------ 
#

		<th align="center" nowrap="nowrap" title="{L_POSTED}"> Added </th>

# 
#-----[ AFTER, ADD ]---------------------------------------- 
#

		<!-- IF SHOW_RATING -->
		<th align="center" nowrap="nowrap" title="{L_SHOW_RATING}"> {L_COL_RATING} </th>
		<!-- ENDIF -->
		<!-- IF SHOW_THANKS -->
		<th align="center" nowrap="nowrap" title="{L_SHOW_THANKS}"> {L_COL_THANKS} </th>
		<!-- ENDIF -->

# 
#-----[ FIND ]------------------------------------------------ 
#

		<td align="center" nowrap="nowrap" title="{L_POSTED}" class="gensmall">{tor.ADDED}</td>

# 
#-----[ AFTER, ADD ]---------------------------------------- 
#

		<!-- IF SHOW_RATING -->
		<td align="center" nowrap="nowrap" title="{L_SHOW_RATING}" class="gensmall">{tor.RATING}</td>
		<!-- ENDIF -->
		<!-- IF SHOW_THANKS -->
		<td align="center" nowrap="nowrap" title="{L_SHOW_THANKS}" class="gensmall">{tor.THANKS}</td>
		<!-- ENDIF -->

#-----[ OPEN ]------------------------------------------------ 
# 

lang_main_bt.php

# 
#-----[ FIND ]------------------------------------------------ 
#

?>

# 
#-----[ ADD, BEFORE ]---------------------------------------- 
#

$lang['Rating'] = '';
$lang['Rating_Votes'] = '';
$lang['Your_Vote'] = ' ';
$lang['Vote_Counted'] = '';

$lang['Thanked'] = '';
$lang['Thanks'] = '';
$lang['Thank_List'] = '';

$lang['Rating_1'] = '';
$lang['Rating_2'] = ' ';
$lang['Rating_3'] = '';
$lang['Rating_4'] = '';
$lang['Rating_5'] = '';

$lang['Bt_Sort_Rating'] = '';
$lang['Bt_Sort_Thanks'] = '';
$lang['Bt_Sort_Votes'] = '';
$lang['Bt_Show_Rating'] = '';
$lang['Bt_Show_Thanks'] = '';
$lang['Bt_Col_Rating'] = 'Rt';
$lang['Bt_Col_Thanks'] = 'Th';

# 
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------ 
# 
# EoM 